EDK - Introduction
------------------

The EDK is a toolbox for C++ programmers. It provides a cycle exact simulation of digital electronic components, such as CPUs or IO chips, by software.

The main purpose of the EDK is to allow the reusability of components. For example, if programmer A has written an emulation of the floppy 1541, and programmer B is about to write a VIC20 emulator, then B can just take the VIA6522 code from the VIC1541, 'plug it' into his VIC20, and it will work without modifications. Better yet, if B has fixed a bug in the VIA6522, then A will just have to recompile the VIC1541 to get that bug fixed, too. Everyone who writes C64 emulators for more than two years will know, that compatibility bugs are the biggest problem which cannot be solved by a single programmer in a reasonable time. Although people are writing C64 emulators since 1992, none of them is still 100% compatible.

If you want to see an example which uses the EDK, you may download PC64Win from http://ourworld.compuserve.com/homepages/pc64. PC64Win is a cycle exact emulation of the Commodore 64, a home computer which has a 1 MHz CPU, 1 MHz SID, two 1 MHz CIAs, an 8 MHz VIC, and a display with 320 x 200 pixels in 16 colors at 50 Hz. On a Pentium-100, PC64Win runs in realtime under most conditions.

The EDK is Public Domain. In other words, everyone can use the code as if he had written it himself. A ready-to-run version for Visual C++ 4.2 can be downloaded from http://ourworld.compuserve.com/homepages/pc64/develop.htm. I guess that, in order to use the EDK with other compilers or x86 operating systems, about 10% of the code will have be re-written. To port the EDK to non-x86 architectures, this effort will increase to 20% because parts of the CPU65xx and the VIC656x are implemented in x86 assembler.

If you have any questions, just send an email to pc64@compuserve.com (Wolfgang Lorenz).
